package com.dankegongyu.component.push;

import android.content.Context;

import com.igexin.sdk.message.GTCmdMessage;
import com.igexin.sdk.message.GTNotificationMessage;
import com.igexin.sdk.message.GTTransmitMessage;

/**
 * 推送监听器
 */
public interface DKPushReceiveListener {

    /**
     * 个推 - 进程id
     *
     * @param context 上下文
     * @param pid     进程id
     */
    void onReceiveServicePid(Context context, int pid);

    /**
     * 个推 - 处理透传消息
     *
     * @param context 上下文
     * @param msg     透传消息
     */
    void onReceiveMessageData(Context context, GTTransmitMessage msg);

    /**
     * 个推 - 接收 cid
     *
     * @param context  上下文
     * @param clientId cid
     */
    void onReceiveClientId(Context context, String clientId);

    /**
     * 个推 - cid 离线上线通知
     *
     * @param context 上下文
     * @param online  在线/离线
     */
    void onReceiveOnlineState(Context context, boolean online);

    /**
     * 个推 - 各种事件处理回执
     *
     * @param context    上下文
     * @param cmdMessage 事件回执GT
     */
    void onReceiveCommandResult(Context context, GTCmdMessage cmdMessage);

    /**
     * 个推 - 消息到达（普通消息非透传），只有个推通道下发的通知会回调此方法
     *
     * @param context 上下文
     * @param msg     推送消息
     */
    void onNotificationMessageArrived(Context context, GTNotificationMessage msg);

    /**
     * 个推 - 消息到达并点击（普通消息非透传），只有个推通道下发的通知会回调此方法
     *
     * @param context 上下文
     * @param msg     推送消息
     */
    void onNotificationMessageClicked(Context context, GTNotificationMessage msg);

    // todo 其他推送回调

}
